/* eslint-disable */
//  https请求模块
const https = require('https')
const {mysql} = require('../qcloud')
//  用knex也可以。
// 新增图书
// 1. 获取豆瓣信息
// https://developers.douban.com/wiki/?title=book_v2#get_isbn_book
// https://api.douban.com/v2/book/isbn/9787536692930
//https://api.douban.com/v2/book/search?q=%E5%98%BB%E5%98%BB%E5%98%BB  图书搜索接口
// 2. 入库    就算是脚本语言，修改代码后。每次也需要重新运行app.js才可以
module.exports = async (ctx)=>{
  const {isbn,openid} = ctx.request.body
  console.log('添加图书',isbn,openid)
  // console.log('-----动态修改代码不生效------')
  if(isbn &&openid){
    //  数据库操作总归就那么几个点，增删改查。。思维  架子要搭建起来。。做事才能快
    // 例如需要那个那个部分，从前捋顺到后面
    const findRes = await mysql('books').select().where('isbn',isbn)
    // const findRes = 0;
    if(findRes.length){
      // code:0  为响应成功
      ctx.state = {
        code:-1,
        data:{
          msg:'图书已存在'
        }
      }
      return
    }
    let url = 'https://api.douban.com/v2/book/isbn/'+isbn
    const bookinfo = await getJSON(url)
    const rate = bookinfo.rating.average
    const { title, image, alt, publisher, summary ,price} = bookinfo
    const tags = bookinfo.tags.map(v=>{
      return `${v.title} ${v.count}`
    }).join(',')
    //  作者
    const author = bookinfo.author.join(',')
    try{
      await mysql('books').insert({
        isbn,openid,rate,title, image, alt, publisher, summary ,price,tags,author
      })
      console.log(isbn,openid,rate,title, image, alt, publisher, summary ,price,tags,author);
      ctx.state.data = {
        title,
        msg:'success'
      }
    }catch(e){
      ctx.state = {
        code:-1,
        data:{
          msg:'新增失败:'+e.sqlMessage
        }
      }
    }

    // tag: 科幻 1000, 小说500
  }
}

function getJSON(url){
  return new Promise((reslove,reject)=>{
    https.get(url,res=>{
      let urlData = ''
      res.on('data', data=>{
        urlData += data
      })
      res.on('end', data=>{
        const bookinfo = JSON.parse(urlData)
        if(bookinfo.title){
          reslove(bookinfo)
        }
        reject(bookinfo)
      })
    })
  })
}
